fn main() {
    // 1. 固定大小数组的基本操作
    println!("=== 固定大小数组示例 ===");
    let arr = [1, 2, 3, 4, 5]; // 创建一个固定大小的数组
    println!("数组长度: {}", arr.len()); // 获取数组长度
    println!("第一个元素: {}", arr[0]); // 通过索引访问元素
    println!("最后一个元素: {}", arr[arr.len() - 1]);

    // 2. 数组切片操作
    println!("\n=== 数组切片示例 ===");
    let slice = &arr[1..4]; // 创建切片，包含索引1到3的元素
    println!("切片内容: {:?}", slice);

    // 3. Vec动态数组的基本操作
    println!("\n=== Vec动态数组示例 ===");
    let mut vec = Vec::new(); // 创建空的Vec
    vec.push(1); // 添加元素
    vec.push(2);
    vec.push(3);
    println!("Vec内容: {:?}", vec);

    // 从现有数组创建Vec
    let vec2 = vec![10, 20, 30]; // 使用vec!宏创建Vec
    println!("Vec2内容: {:?}", vec2);

    // Vec的常用操作
    vec.pop(); // 移除并返回最后一个元素
    println!("移除最后一个元素后: {:?}", vec);

    // 4. 数组遍历
    println!("\n=== 数组遍历示例 ===");
    // for循环遍历
    print!("使用for循环遍历: ");
    for x in &vec {
        print!("{} ", x);
    }
    println!();

    // 使用iter()方法遍历
    print!("使用iter()遍历并乘以2: ");
    vec.iter().map(|x| x * 2).for_each(|x| print!("{} ", x));
    println!();

    // 5. 数组排序和搜索
    println!("\n=== 排序和搜索示例 ===");
    let mut numbers = vec![3, 1, 4, 1, 5, 9, 2, 6];
    numbers.sort(); // 排序
    println!("排序后: {:?}", numbers);
    
    // 二分查找（要求数组已排序）
    match numbers.binary_search(&4) {
        Ok(index) => println!("找到数字4，位置在: {}", index),
        Err(_) => println!("未找到数字4")
    }

    // 6. 其他常用方法
    println!("\n=== 其他常用方法示例 ===");
    let sum: i32 = numbers.iter().sum(); // 求和
    println!("数组元素和: {}", sum);
    
    let max = numbers.iter().max(); // 最大值
    println!("最大值: {:?}", max);
    
    let contains = numbers.contains(&5); // 检查是否包含某个值
    println!("是否包含数字5: {}", contains);
}
